Unityのコンパイル中か否かをメインスレッド外から見分ける方法


概要

そもMainThread外からそういうのを知る方法があるのか?

という話をしていたら、


Unityがコンパイル時に作成、削除してるファイルの存在をけーご君から教えて貰った。



内容

Unity Editorがコンパイル中にSublimeSocketAssetのコード補完走らせたりすると、

SublimeSocketAssetが原因でUnity Editorが固まる、という感じだったので、

対処法としてコンパイル中だったら補完を走らせなくする、とかを考えようとしていたが、

MainThread外からUnityがコンパイル中かどうかを知る術が無い。


というわけで、下記の出番。


Project/Library/ScriptAssemblies/CompilationCompleted.txt というファイルが、

・コンパイル開始時に消される

・コンパイル完了時に作成される

という挙動をしてる。

Win版も一緒っぽい。


わかりやすいかどうかはアレだがgifで。


2014-06-30 00_17_06.gif


SublimeSocketAssetだと、ファイル保存のアクションからUnityのコンパイルを(Unityから開いたファイルで無くとも)

実行されるので、


保存(⌘+s) -> コンパイル開始 -> Finderから該当のファイルが消える -> コンパイル終了と同時にファイルが現れる


というのが観測できた。


コンパイル中にUnityEditor内でThread走らせると、変な死に方することが有るらしい。

まあなーーー実行系がそれだしな。

このへんでコンパイル中だったら、みたいな処理を作るかなあ。